<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="index.css">

    <style>
        .red {
            color: red;
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="container">
            <div class="form-group">
                <div class="input-group">
                    <h4>品牌管理</h4>
                </div>
            </div>
            <table class="table table-bordered table-hover mt-2">
                <thead>
                    <tr>
                        <th>序号</th>
                        <th>资产名称</th>
                        <th>价格</th>
                        <th>创建时间</th>
                        <th>操作</th>
                    </tr>
                </thead>

                <!-- 这里可以利用隐式转换简写代码 -->
                <!-- 原因：如果有数据，长度就是1，2，3，4，5，6之类的 -->
                <!-- 这些数字其实都是true,只有当没数据时，长度为0，0就是false -->
                <tbody v-if="list.length">
                    <!-- <tbody v-if="list.length > 0"> -->
                    <!-- 生成的商品数据 -->
                    <tr v-for="(item, index) in list">
                        <td>{{ index + 1 }}</td>
                        <td>{{ item.name }}</td>
                        <td :class="{red: item.price >= 100}">{{ item.price }}</td>
                        <td>{{ item.time | formatTime }}</td>
                        <td><a @click.prevent="del(index)" href="#">删除</a></td>
                    </tr>
                    <!-- 统计的tr -->
                    <tr style="background-color: #ddd;">
                        <td>统计：</td>
                        <td colspan="2">总价钱：{{ total }} ￥</td>
                        <td colspan="2">平均价：{{ total / list.length }} ￥</td>
                    </tr>
                </tbody>

                <tfoot v-else>
                    <tr>
                        <td colspan="5" style="text-align: center;">暂无数据</td>
                    </tr>
                </tfoot>
            </table>
            <form class="form-inline">
                <div class="form-group">
                    <div class="input-group"><input type="text" v-model.trim="name" placeholder="资产名称"
                            class="form-control"></div>
                </div>
                <p></p>
                <div class="form-group">
                    <div class="input-group"><input type="text" v-model.number.trim="price" placeholder="价格"
                            class="form-control"></div>
                </div>
                <p></p>
                <!-- 双标签button，在form里面，它其实就是"提交" -->
                <!-- 所以默认就会有点击事件的行为，行为就是提交表单，就跳转了 -->
                <!-- 所以要阻止默认行为 -->
                <button @click.prevent="add" class="btn btn-primary">添加资产</button>
            </form>
        </div>
    </div>

    <script src="./vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.4.1/dayjs.min.js"></script>

    <script>
        new Vue({
            el: '#app',
            data: {
                // 声明一个数组，把他从本地存储取出来
                // 默认取出来是一个JSON字符串，并不是数组，所以还要通过JSON.parse转成JS数组
                // 如果本地存储没数据，会读取到null，读取到null要报错
                // 所以我们要判断获取本地存储看有没有值，有值就拿他的值，没值就给空数组
                list: JSON.parse(localStorage.getItem('brand142')) || [],
                // 绑定资产名称
                name: '',
                // 绑定价格
                price: ''
            },

            methods: {
                add() {
                    // // 阻止默认行为 可以通过事件修饰符阻止默认行为
                    // e.preventDefault()

                    // 拿到输入内容做非空判断
                    // 非空判断时要过滤掉纯空格
                    if (this.name == '' || this.price == '') return alert('请输入完整内容')

                    // 如果不为空，就把数据加到数组
                    // 我此时要添加的数据既有name，又有price，所以应该添加成对象
                    this.list.push({
                        name: this.name,
                        price: this.price,
                        time: new Date()
                    })

                    // 添加后让输入框内容清空
                    this.name = this.price = ''
                },

                del(index) {

                    // 把这个下标对应的数据在数组中删除即可
                    this.list.splice(index, 1)
                }
            },


            filters: {

                formatTime(val) {

                    return dayjs(val).format('YYYY-MM-DD')
                }
            },

            computed: {

                total() {

                    // 结果要根据所有的数据累加起来
                    // 遍历数组，把数组里的每个价格累加起来
                    let sum = 0
                    this.list.forEach(v => sum += v.price)
                    return sum
                }
            },

            watch: {

                // 侦听list的变化
                list() {

                    // 把数组存到本地存储
                    // 本地存储只能存字符串，而现在我们要存的是复杂类型
                    // 不能存，所以要把复杂类型转成JSON字符串，再存
                    localStorage.setItem('brand142', JSON.stringify(this.list))
                }
            }
        })
    </script>
</body>

</html>